#ifndef __PRINTK_H__
#define __PRINTK_H__

#include "sys.h"
#include "FreeRTOS.h"

typedef enum {
    TRACE_MODE_CPU = 0,
    TRACE_MODE_DMA,
}print_mode;

/**
 * @brief       printk初始化
 * @note        初始打印方式为阻塞打印
 * @retval      无
 */
void printk_init(void);

/**
 * @brief       printk缓冲处理
 * @note        需要注意在handler前将打印方式改为DMA
 * @retval      无
 */
uint8_t printk_handler(void);

/**
 * @brief       printk缓冲处理
 * @param mode  TRACE_MODE_CPU : cpu阻塞打印
 *              TRACE_MODE_DMA : dma打印
 * @note        需要注意在handler前将打印方式改为DMA
 * @retval      无
 */
void uart_print_mode_set(print_mode mode);

int printk(const char *fmt, ...);

#endif
